<?php
namespace app\exam\model;
use think\Model;
use think\Db;
//model基类extrainfo
class Base extends Model{
    /*
      新增数据
      @param $data(array) 收集页面传送的数据
    */
    public static function DbAdd($Data,$flag='1'){
        if($flag == '0'){
            //这个可以返回最新插入的自增的id值
            return  self::insertGetId($Data);
        }else{
            return  self::create($Data);
        }

    }
    /*
      修改数据
      @param $baseData(array) 修改哪些数据
      @param $key_field(str) 修改数据的条件字段
      @param $value(str) 修改的条件数据值
    */
    public static function DbUpdate($baseData,$key_field,$value){
        return  self::where($key_field,$value)->update($baseData);
    }
    /*
      获取单条数据存在否
      @param $where(array) 条件查询
    */
    public static function DbSelectOne($where){
        return self::get($where);
    }
    //查询获取数据
    /*
      @param $key_filed(str) 单条件查询，指定查询条件的数据表字段名
      @param $value(str) 单条件查询，指定查询条件的数据表字段值
      @param $field(array|str) 查询哪些字段,如果是多条件查询是字符串,单条件查询是数组
      @param $table(str) 多条件查询的数据表名
      @param $where(str) 复杂的多条件查询使用原生sql 例如: $where='is_delete = 1 and user_wx_id=:id'   $where='is_delete =? and user_wx_id=?';
      @param $bind(array) 绑定原生sql的条件参数 例如 $bind = ['id'=>$wxid]  ['1','23'];

    */
    //此处有个问题，就是如果这个sql有多个条件，那就没办法搞了。
    public static function Dbselect($key_filed='',$value='',$field,$more='3',$table='',$where='',$bind='',$sql=''){
        //如果等于1是获取单条数据,3表示多条数据
        if($more == '1'){
            return  self::where($key_filed,$value)->field($field)->find()->toArray();
        }else if($more == '3'){
            return  self::where($key_filed,$value)->field($field)->select()->toArray();
        }elseif ($more=='2') {
            //2表示是原生查询
            return Db::table($table)->where($where,$bind)->field($field)->select();
            //原生sql查询
        }elseif ($more=='4') {
            # code...
            return Db::query($sql,$bind);
        }
    }
    //字段自动加1
    /*
    @param $key_filed(str) 数据表的字段名
    @param $value(str)  字段值
    @param $addField(str) 数据表需要自动增加1的字段
    */
    public static function DbaddOne($key_filed,$value,$addField){
        return self::where($key_filed, $value)->setInc($addField);
    }
    //字段自动减1
    public static function DbsetDec($key_filed,$value,$addField)
    {
        return self::where($key_filed, $value)->setDec($addField);
    }
    //sql原生查询,用于复杂的查询
    /*5454
     @param $sql(str) 原生sql语句  $where='select * from aaa where is_delete =? and user_wx_id=?';
     @param $bind(array) 默认为空 绑定的sql语句参数条件 ['1','23']; 1对应ise_delete  user_wx_id对应23 按顺序来
    */
    public static function Dbsql($sql,$bind=''){
        if($bind != ''){
            return Db::query($sql,$bind);
        }else{
            //存在没有参数的查询
            return  Db::query($sql);
        }
    }
    //删除
    //@param $key 字段
    //@param $value 字段值
    public static function Dbdelete($key,$value){
        return self::where($key,$value)->delete();
    }


}



